Multi-threaded processors typically comprise general-purpose local and global registers. The local registers are private to the particular hardware thread and can only be accessed by the hardware thread itself, whilst global registers are shared between different hardware threads. In an example, a multi-threaded processor may be a four-threaded processor and these four threads may all be able to access a set of global registers. These global registers may be used by different threads for different purposes and the allocation of global registers for these different purposes is typically performed by a compiler.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known multi-threaded processors.